import { generatePromise, formatUTCDate } from "@/util/index.js";
import Toast from "../components/Toast/Toast.js";
import i18n from "../i18n";
export default {
    getHistoryData (state) {
        // window.hilink.getDevHistory(
        //   "0", // devid,string,请取"0"，表示当前设备，暂不支持其它取值
        //   "0", // pageNo,string, 缺省 0
        //   "10", // pageSize,string, 缺省 10
        //   "20221020T010203Z", // startTime,string, 格式：20150501T010203Z
        //   "20221101T010203Z", // endTime,string,
        //   "sitTime", // sid,string, 为该设备的service id，取值参见Profile定义
        //   "sitTimeCount", // character,string, 为该设备的characteristicName，取值参见Profile定义
        //   "Ag.resultCallback" // resultCallback，成功或失败时，将调用传入resultStr返回结果
        // );

        // window.Ag.resultCallback = res => {
        //   console.log("云端数据res:", res);
        // };
    },
    // desc 向云端获取缓存的所有数据
    getDevInfoAll ({ state, commit, dispatch }) {
        console.hLog(new Time().logTime + "获取云端快照1");
        return new Promise((resolve, reject) => {
            if (!window.hilink) {
                commit("commitAppData", { hasGetAllData: true });
                return;
            }
            console.hLog(new Time().logTime + "获取云端快照2");
            window.hilink.getDevCacheAll("0", "", "Ag.getDevCacheAllRes");
            window.Ag.getDevCacheAllRes = res => {
                let data = JSON.hParse(res);
                console.hLog(new Time().logTime + "app本地缓存", data);
                if (typeof data.role !== "undefined" && data.role !== "owner") {
                    state.shareDevice = true;
                }
                commit("commitAppData", {
                    devId: data.devId
                });
                // window.hilink.getDevStatisticsDataWithQuery(
                //   data.devId, // devid,string,请取"0"，表示当前设备，暂不支持其它取值
                //   JSON.stringify({
                //     devId: data.devId,
                //     sid: "sitTime",
                //     character: "sitTime",
                //     startTime: "1667266831",
                //     endTime: "1667785232",
                //     pageSize: "10",
                //     accuracy: "DAILY"
                //   }),
                //   "Ag.resultCallback2" // resultCallback，成功或失败时，将调用传入resultStr返回结果
                // );

                // window.Ag.resultCallback2 = res => {
                //   console.log("统计数据res:", res);
                // };
                // window.hilink.getDevStatisticsDataWithQuery(
                //   data.devId, // devid,string,请取"0"，表示当前设备，暂不支持其它取值
                //   JSON.stringify({
                //     devId: data.devId,
                //     sid: "sitPosture",
                //     character: "sitPostureChangeCount",
                //     startTime: "2022-10-2 00:00:00",
                //     endTime: "2022-11-2 00:00:00",
                //     pageSize: "10",
                //     accuracy: "DAILY"
                //   }),
                //   "Ag.resultCallback3" // resultCallback，成功或失败时，将调用传入resultStr返回结果
                // );

                // window.Ag.resultCallback3 = res => {
                //   console.log("统计数据3res:", res);
                // };
            };
            // 获取设备状态(最新)
            window.hilink.getDevInfoAll("0", "", "Ag.getDevInfoAllRes");
            console.hLog(new Time().logTime + "获取云端快照3");
            window.Ag.getDevInfoAllRes = res => {
                let data = JSON.hParse(res);
                commit("commitAppData", { hasGetAllData: true, showTaskToast: false });
                console.hLog(new Time().logTime + "getDevInfoAllRes", data);
                data.services.forEach(service => commit("commitHilink", service));
                // // 数据有变动主动上报
                window.deviceEventCallback = res => {
                    let content = JSON.hParse(res);
                    console.hLog(new Time().logTime + "设备上报", content);

                    let sid = content && content.sid;
                    let data = content && content.data;
                    if (!content || !sid || !data) {
                        return;
                    }
                    commit("UPDATE_DEVICE_DATA", content);
                };
                resolve();
            };
        });
    },

    // desc 下发指令统一通道
    // param type:Object,required:true,default:{sid:{cha:1}}
    setDevInfo ({ commit }, param) {
        return new Promise((resolve, reject) => {
            console.hLog(new Time().logTime + "下发数据", JSON.stringify(param));
            //检查是否在profile中
            commit("commitAppData", { showTaskToast: true });

            if (window.hilink) {
                window.hilink.setDeviceInfo(
                    "0",
                    JSON.stringify(param),
                    "Ag.setDevInfoRes"
                );
                console.hLog(
                    new Time().logTime + "下发数据string",
                    JSON.stringify(param)
                );
            } else {
                // 模拟下发用
                // setTimeout(() => {
                //      commit("commitAppData", { showTaskToast: false });
                //     resolve();
                // }, 100);
                setTimeout(() => {
                    commit("commitMock", param);
                    //   console.hLog(
                    //     new Time().logTime + "下发数据string",
                    //     JSON.stringify(param)
                    //   );
                }, 300);
            }
            window.Ag.setDevInfoRes = res => {
                commit("commitAppData", { showTaskToast: false });
                let data = JSON.hParse(res);
                console.hLog(new Time().logTime + "返回命令错误码", res);
                Ag.isError(data) ? reject(new Error("error")) : resolve();
            };
        });
    }
};
